package main

import (
	"fmt"
	"reflect"
)

// reflect.TypeOf 获取变量类型
// reflect.ValueOf 获取变量值
func main() {
	i := 64
	reflect01(i)
}

func reflect01(i interface{}) {
	// 获取传入变量的 type,值
	rType := reflect.TypeOf(i)
	fmt.Println("rType=", rType) // rType= int
	rValue := reflect.ValueOf(i)
	// rValue并非真正的值
	//sum := rValue + 32
	fmt.Printf("rValue=%v rValue=%T \n", rValue, rValue) //rValue=64 rValue=reflect.Value
	// 获取真正的值
	//fmt.Println(rValue.Int() + 100)
	//  转为interface
	iV := rValue.Interface()
	// 将 interface{} 通过断言转为需要的类型
	num := iV.(int)
	fmt.Println(num) // 64
}
